#!/usr/bin/env bash
###
 # @Author: Logan.Li
 # @Gitee: https://gitee.com/attacker
 # @email: admin@attacker.club
 # @Date: 2025-03-14 05:17:55
 # @LastEditTime: 2025-03-14 05:24:00
 # @Description: MySQL数据库导入脚本
### 

# 加载配置文件
CONFIG_FILE="$(dirname "$0")/config.ini"
if [ ! -f "$CONFIG_FILE" ]; then
    echo -e "\033[31m错误：配置文件不存在：${CONFIG_FILE}\033[0m"
    exit 1
fi

# 解析配置文件中的[restore]部分
eval "$(sed -n '/^\[restore\]/,/^\[/p' "$CONFIG_FILE" | grep -v '^\[' | sed 's/ *= */=/')"

# 检查必要的变量是否存在
if [ -z "$host" ] || [ -z "$port" ] || [ -z "$user" ] || [ -z "$password" ]; then
    echo -e "\033[31m错误：配置文件中缺少必要的数据库连接信息\033[0m"
    exit 1
fi

# 检查当前目录是否有.sql文件
sql_files=(*.sql)
if [ ! -f "${sql_files[0]}" ]; then
    echo -e "\033[31m错误：当前目录下没有找到.sql文件\033[0m"
    exit 1
fi

total_files=${#sql_files[@]}
current_file=0

# 遍历所有.sql文件并导入
for sql_file in "${sql_files[@]}"; do
    ((current_file++))
    
    # 提取数据库名（去除.sql后缀）
    dbname="${sql_file%.*}"

    echo -e "\033[34m正在导入 ${dbname} (文件: ${sql_file}) [${current_file}/${total_files}]...\033[0m"
    
    # 创建数据库（如果不存在）
    if ! mysql -h"$host" -P"$port" -u"$user" -p"$password" \
        -e "CREATE DATABASE IF NOT EXISTS \`${dbname}\`;" 2>/dev/null; then
        echo -e "\033[31m错误：创建数据库 ${dbname} 失败\033[0m"
        continue
    fi
    
    # 导入SQL文件到对应数据库
    if mysql -h"$host" -P"$port" -u"$user" -p"$password" \
        --default-character-set=utf8mb4 \
        "$dbname" < "$sql_file" 2>/dev/null; then
        echo -e "\033[32m成功导入 ${dbname} [${current_file}/${total_files}]\033[0m"
    else
        echo -e "\033[31m错误：导入 ${dbname} 失败\033[0m"
    fi
    
    echo # 空行分隔
done

echo -e "\033[32m所有导入操作已完成\033[0m"


# 遍历所有.sql文件并导入
for sql_file in "${sql_files[@]}"; do
    ((current_file++))
    
    # 提取数据库名（去除.sql后缀）
    dbname="${sql_file%.*}"

    echo -e "\033[34m正在导入 ${dbname} (文件: ${sql_file}) [${current_file}/${total_files}]...\033[0m"
    
    # 创建数据库（如果不存在）
    if ! mysql -h"$host" -P"$port" -u"$user" -p"$password" \
        -e "CREATE DATABASE IF NOT EXISTS \`${dbname}\`;" 2>/dev/null; then
        echo -e "\033[31m错误：创建数据库 ${dbname} 失败\033[0m"
        continue
    fi
    
    # 导入SQL文件到对应数据库
    if mysql -h"$host" -P"$port" -u"$user" -p"$password" \
        --default-character-set=utf8mb4 \
        "$dbname" < "$sql_file" 2>/dev/null; then
        echo -e "\033[32m成功导入 ${dbname} [${current_file}/${total_files}]\033[0m"
    else
        echo -e "\033[31m错误：导入 ${dbname} 失败\033[0m"
    fi
    
    echo # 空行分隔
done

echo -e "\033[32m所有导入操作已完成\033[0m"
